/**
 * 用于组件或对象间交互数据
 * 可以直接在对象上创建需要的数据
 */
cc.Class({
    extends: cc.Component,
    properties: {
        data:{
            default:'',
            tooltip:'可以设置一个字符串类型的默认值',
        },
        changeEvents: {
            default: [],
            type: [cc.Component.EventHandler],
            tooltip: '调用setData时，会触发的回调'
        },
    },
    /**
     * 设置数据
     * @param {object} data 
     */
    setData(dataOrEvent, dataOrNull) {
        this.data = ((dataOrEvent instanceof cc.Event) || (dataOrEvent instanceof cc.Component)) ? dataOrNull : dataOrEvent;
        var event = new cc.Event.EventCustom('dataChanged');
        event.target = this;
        cc.Component.EventHandler.emitEvents(this.changeEvents, event, this.data);
    },
    /**
     * 获取数据
     */
    getData() {
        this.data = (this.data === void 0) ? {} : this.data;
        return this.data;
    }
});
